package com.bingbing.back.controller;

import com.bingbing.back.dto.MajorInfoDto;
import com.bingbing.back.po.MajorInfo;
import com.bingbing.back.service.MajorInfoService;
import com.github.pagehelper.PageInfo;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;

@CrossOrigin
@RestController
@RequestMapping("/major")
public class MajorInfoController {

    @Resource
    private MajorInfoService majorInfoService;

    /**
     * 不分页
     * @param dto
     * @return
     */
    @RequestMapping("/showAll")
    public List<MajorInfo> showAll(MajorInfoDto dto){
        return majorInfoService.showAll(dto);
    }

    /**
     * 按照给定信息：专业名称、专业层次、专业大类，专业小类，是否人气排序
     * 搜索相应专业，并完成分页功能
     * @param pageNum
     * @param pageSize
     * @param dto
     * @return
     */
    @RequestMapping("/search")
    public PageInfo<MajorInfo> search(int pageNum, int pageSize, MajorInfoDto dto){
        return majorInfoService.search(pageNum, pageSize, dto);
    }

    /**
     * 根据本科或专科，返回其包含的大类名称
     * @param majorLevel
     * @return
     */
    @RequestMapping("/searchByMajorLevel")
    public List<MajorInfoDto> searchByLevel(String majorLevel){
        return majorInfoService.searchByLevel(majorLevel);
    }

    /**
     * 根据大类名称返回包含的小类名称
     * @param className 大类名称
     * @return 包含的小类名称majorSections的list数组
     */
    @RequestMapping("/searchByClassName")
    public List<MajorInfoDto> searchByClassName(String className){
        return majorInfoService.searchByClassName(className);
    }

    /**
     * 根据人气值推荐专业
     * @return
     */
    @RequestMapping("/recommend")
    public List<MajorInfo> recommendMajor(){
        return majorInfoService.recommendMajor();
    }

    /**
     * 根据dataId搜索具体某个专业
     * @param dataId
     * @return
     */
    @RequestMapping("/showMajorById")
    public MajorInfoDto showMajorById(int dataId){
        return majorInfoService.showMajorById(dataId);
    }

    // 增加专业人气值
    @RequestMapping("/addClout")
    public void addClout(int dataId, int val){
        majorInfoService.addClout(dataId, val);
    }
}
